<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // 1. 有一个数组 list = ["a", "b", "c", "d", "e", "f"] 随机取四个元素, 放到新数组中, 再拼接形成字符串(可以重复)
  // var list = ["a", "b", "c", "d", "e", "f"];
  // var NewList = [];
  // for (i = 0; i < 4; i++) {
  //   var index = parseInt(Math.random() * (list.length - 1));
  //   var newIndex = list[index];
  //   console.log(newIndex);
  //   NewList.push(newIndex);
  // }
  // console.log(NewList);
  // 1.1  要求随机的四个元素 不重复
  // 提示: 数组如何取值 ? 能不能放到新数组中 ?
  // var list = ["a", "b", "c", "d", "e", "f"];
  // var NewList = [];  // ["a"]  不重复 每次将元素放到新数组之前 先要判断 数组中是否存在该元素 => indexOF()  includes()
  // for (i = 0; i < 4; i++) {
  //   var index = parseInt(Math.random() * (list.length - 1));
  //   var newIndex = list[index];
  // 每次将元素放到新数组之前 先要判断 数组中是否存在该元素
  //   if (NewList.indexOf(newIndex) == -1) {  // 不存在  => 放
  //     NewList.push(newIndex);  //把随机的元素放到数组中
  //   } else {  // 存在   => 如果不做任何操作 会少放一次
  //     console.log(NewList, newIndex + '已存在');
  //   }
  // }
  // console.log(NewList);

  // 解决方法1: 
  var list = ["a", "b", "c", "d", "e", "f"];
  var arr = []; // ["a"]  不重复 每次将元素放到新数组之前 先要判断 数组中是否存在该元素 => indexOF()  includes()
  var count = 4;   //通过变量指定循环的次数  如果重复再来一次
  for (var i = 0; i < count; i++) {
    var index = Math.round(Math.random() * (list.length - 1));
    var item = list[index];
    // 每次将元素放到新数组之前 先要判断 数组中是否存在该元素
    if (arr.indexOf(item) == -1) {  // 不存在  => 放
      arr.push(item);   //把随机的元素放到数组中
    } else { // 存在   => 如果不做任何操作 会少放一次
      console.log(arr, item + "已存在,再来一次");
      count++; // 存在 再来一次
    }
  }
  console.log(arr);

  // 解决方法2:     // arr.length<4  如果数组中元素不满4个继续
  // var list = ["a","b","c","d","e","f"];
  // var arr = []; // ["a"]  不重复 每次将元素放到新数组之前 先要判断 数组中是否存在该元素 => indexOF()  includes()
  // // arr.length<4  如果数组中元素不满4个继续
  // for(var i=0;arr.length<4;i++){
  //     var index = Math.round(Math.random() * (list.length - 1)); 
  //     var item = list[index];
  //     // 每次将元素放到新数组之前 先要判断 数组中是否存在该元素
  //     if(arr.indexOf(item)==-1){  // 不存在  => 放
  //         arr.push(item);   //把随机的元素放到数组中
  //     }else{ // 存在   => 如果不做任何操作 会少放一次
  //         console.log(arr,item+"已存在,再来一次");
  //     }
  // }
  // console.log(arr);

  // var list = ["a", "b", "c", "d", "e", "f"];
  // var arr = [];
  // while (true) {
  //   var index = Math.round(Math.random() * (list.length - 1));
  //   var item = list[index];
  //   if (arr.indexOf(item) == -1) {  // 不存在  => 放
  //     arr.push(item);   //把随机的元素放到数组中
  //     if (arr.length == 4) break;
  //   }
  // }
  // console.log(arr);

    // 方法3:
    // var list = ["a","b","c","d","e","f"];
    // var arr = []; // ["a"]  不重复 每次将元素放到新数组之前 先要判断 数组中是否存在该元素 => indexOF()  includes()
    // for(var i=0;i<4;i++){  // 假如 i=2时 随机元素重复
    //     var index = Math.round(Math.random() * (list.length - 1)); 
    //     var item = list[index];
    //     // 每次将元素放到新数组之前 先要判断 数组中是否存在该元素
    //     if(arr.indexOf(item)==-1){  // 不存在  => 放
    //         arr.push(item);   //把随机的元素放到数组中
    //     }else{ // 存在   => 如果不做任何操作 会少放一次
    //         console.log(arr,item+"已存在");
    //         //  => 假如 i=2时 随机元素重复 i-- => i=1  本次循环结束  i++ => i=2 (忽略本次,再来一次)
    //         i--;  // i--   
    //     }
    // }
    // console.log(arr);



</script>

</html>